home *** CD-ROM | disk | FTP | other *** search
-
- MIDI Packet Master © 1993 WareSoft Todos los derechos reservados
- Programado por Antonio J. Pomar Rosselló
-
-
-
- DISTRIBUCION
-
- Este programa es FreeWare. Esto significa que el programa puede circular
- libremente siempre que se incluyan todos los ficheros asociados al programa.
- Está prohibido utilizar el programa para fines comerciales, o sea que solo se
- pueden cargar los gastos normales de copia y envio que se cargan habitualmente
- en las librerias de Dominio Público.
-
- El paquete completo de distribución en castellano comprende:
-
- MPMaster Este es el programa ejecutable.
- MPMaster.DOC Es el fichero que estás leyendo ahora.
- MPMaster.HISTORIA Explica las versiones que han aparecido hasta
- la fecha de distribución del paquete.
- MPMaster.ESQUEMA Esquema de un interface MIDI de bajo costo.
-
- El autor del programa no acepta ninguna responsabilidad sobre cualquier
- perjuicio que puede suponer el uso o abuso del programa, ni ofrece ninguna
- garantia sobre el programa y sus capacidades. Tampoco se garantiza nada sobre
- la precisión o estilo literario de este documento ni se acepta ninguna
- responsabilidad sobre las consecuencias que puede acarrear su lectura.
-
- Se reconocen todas las marcas registradas, marcas comerciales y Copyrights
- de los productos mencionados en este documento.
-
- Junto con el programa se incluye el esquema de un interface MIDI barato y
- que funciona desde hace más de 6 años (realizado originalmente para un
- secuenciador MIDI que programé en ensamblador para el Spectrum +3). El
- interface es muy pequeño, tiene aislamiento por optoacoplador e icorpora una
- entrada y una salida. No acepto ninguna responsabilidad sobre las consecuencias
- del montaje y uso del interface MIDI. Por otro lado hay en estos momentos 3
- interfaces como el del esquema ya montados y que funcionan sin problemas. El
- circuito no necesita placa de circuito impreso ya que es tan sencillo que
- cabe en la caja del conector de 25 patillas que va al port serie (cuando lo
- diseñé para el Spectrum +3 conseguí meter todo el interface en la caja de un
- conector de 9 patillas).
-
- Queda prohibido el uso del esquema del interface MIDI para usos comerciales,
- por lo que solo está permitida la construcción de éste para uso personal.
-
-
-
- REQUERIMIENTOS
-
- Este programa necesita WorkBench 2.04 (o sea, versión 37) o superior para
- funcionar. Además en LIBS: tiene que estar la asl.library, que viene con el
- sistema operativo, para el requester de ficheros.
-
- Es imprescindible tener un interface MIDI para conectar el equipo MIDI que
- quieras usar con el Amiga. En caso de que no tengas interface MIDI mira el
- esquema que se incluye con el programa para construirte un interface sencillo.
-
-
-
- INTRODUCCION
-
- Este programa se llama MIDI Packet Master (MPMaster para abreviar) y sirve
- para transferir samples entre el Amiga y un dispositivo MIDI (originalmente
- programado para usarlo con un sintetizador Yamaha SY85) que admita el uso de
- samples. Lo que hace es realizar la transferencia según el standard MIDI de
- transmisión de samples, de forma que cualquier aparato que soporte dicho
- standard podrá transmitir/recibir samples hacia/desde el Amiga utilizando el
- programa. Por lo que yo sé ninguno de los programas comerciales MIDI que
- conozco soporta este tipo de transferencia.
-
-
-
- STANDARD MIDI
-
- El standard MIDI de transferencia de samples (llamado también Sample Dump
- Standard) divide el sample en packets (paquetes) de pequeño tamaño (127 bytes),
- enviando los packets de forma consecutiva via interface MIDI. Esto ralentiza la
- transmisión, ya que de cada packet solo 120 bytes son de datos reales y el
- resto (7 bytes) son de control, pero permite que la corrección de errores sea
- mucho más rápida, ya que si la transferencia falla en algún momento se puede
- solicitar a la fuente de datos que repita el packet incorrecto, y posteriores,
- en vez de tener que reanudar la transferencia desde el principio.
-
- Las características del standard son:
-
- - Tamaño máximo del sample: 2 millones de unidades de sampleado
- - Resolución del sample: 8, 12 o 16 bits
- - Los samples se pueden transferir por el canal que se desee (1 a 16)
- - Transmisión del margen del sample utilizado para la repetición (loop)
- - Tipo de repetición definible (ninguna,normal o alternada)
- - Control del centrado del sample en el teclado (periodo)
-
- Respecto al periodo, no he podido saber como se calcula por que en manual
- del SY85 no da ninguna información sobre este parámetro. Si dispones de
- alguna información a este respecto mándamela, por favor, para que pueda
- completar la implementación del standard en el programa.
-
- Luego viene lo del inicio y final de repetición (loop). Aqui parece que hay
- algo extraño en cuanto a los valores que puede tomar. Cuando la repetición se
- hace con todo el sample (un bucle de repetición muy corriente) el inicio de
- loop toma el valor 0, pero el final de loop toma como valor el tamaño del
- sample, cuando en teoria debería ser el tamaño del sample MENOS 1. Esto se ve
- claramente en un sample de tamaño 5 (por ejemplo), donde el inicio de loop toma
- el valor 0 y el fin de loop el valor 5. Según esto resulta que el loop es mas
- largo que el propio sample, ya que tenemos las posiciones de sample 0, 1, 2, 3,
- 4 y 5, que es donde termina el loop, o sea, 6 posiciones en total. Esto lo he
- comprobado en varios samples que venian con el SY85. Tras hacer varias pruebas
- con samples transmitidos desde el Amiga al SY85 he podido comprobar que el
- final de loop no debe salir fuera del sample, ya que así se producen ruidos al
- leer posiciones de memoria que no corresponden a las ocupadas por el sample.
- Por esto el programa limita el loop a los valores que deberian ser correctos
- (0 y longitud-1), con lo que el loop funciona perfectamente.
-
- El formato tiene limitaciones, sobre todo cuando lo comparamos con formatos
- de tipo flexible, como el IFF, pero tiene la ventaja de ser un standard común a
- varias máquinas, además, es lo único que hay...
-
- Consulta el manual de tu equipo para más detalles sobre este formato MIDI,
- si es que está preparado para soportarlo. Si no lo está, este programa no te
- sirve de nada en absoluto (lo siento...).
-
- En el caso de que tengas información sobre este standard te agradeceria
- mucho que me enviases fotocopias para poder mejorar la implementación del
- standard en el programa.
-
-
-
- EL STANDARD EN EL PROGRAMA
-
- El programa puede transmitir/recibir samples via MIDI usando el formato
- standard de packets. Las características son:
-
- Recepción:
- - Canal de recepción seleccionable (1-16)
- - Acepta cualquier resolución entre 8 y 21 bits.
- - Al grabar el sample a disco se convierte siempre a RAW de 8 bits.
- - Muestra todas las características del sample que se está recibiendo.
- - Detección de errores de recepción, aunque no soporta aún la corrección
- de errores, si no que la recepción se interrumpe en caso de error.
- - Posibilidad de interrumpir la recepción.
-
- Transmisión:
- - Canal de transmisión seleccionable (1-16), independiente del de recepción.
- - Ajuste manual del loop (inicio, final y tipo) y del periodo.
- - La transmisión es siempre de 8 bits.
- - Posibilidad de interrumpir la transmisión.
-
- Algunas de las características del programa son un poco primitivas debido a
- que mis información sobre el standard MIDI de transmisión de samples parte de
- la poca (muy poca..) información que se dá en el manual del SY85, y de un
- montón de pruebas realizadas sobre dicho sintetizador. Además, la
- implementación del standard en el SY85 no es completa, aunque funciona bastate
- bién, por lo que no he podido experimentar con todas las posibilidades del
- standard.
-
- Por otro lado el programa solo admite grabar samples en formato RAW de 8
- bits pero se le ha añadido la posibilidad de cargarlos en RAW o en IFF para
- poder aprovechar los datos de loop que se incluyen en el formato IFF. Por otro
- lado me gustaria añadir la grabación en IFF pero para ello necesito un poco
- más de información sobre el formato 8SVX y sobre la IFFParse.library del
- sistema operativo.
-
-
-
- ARRANQUE DEL PROGRAMA
-
- El programa está pensado para arrancar desde WorkBench ya que las opciones
- se leen del icono del programa, por lo que no recomiendo arrancarlo desde el
- SHELL.
-
- Al arrancar, el programa aloja el port serie a través del sistema operativo,
- para evitar así posibles conflictos con otros programas que intenten acceder
- también al port serie. Además, mientras el programa esté en marcha nadie más
- podrá usarlo. En caso de que alguien esté usando el port serie en el momento de
- arrancar el programa, éste comunicará que le ha sido imposible conseguir el
- port serie y no arrancará. También dará el nombre que ha entregado el programa
- que ocupa el port serie. También se usa el audio.device para reproducir el
- sample de forma legal.
-
- Cuidado con los programas que acceden al port serie a lo bestia, sin pedirlo
- al sistema operativo, ya que se podría producir un conflicto serio, sobre todo
- durante la transmisión, y el sintetizador podria ponerse histérico. Un ejemplo
- de ésto es el secuenciador Dr T's KCS, que accede al port serie sin mirar antes
- si ya hay alguien utilizándolo (enhorabuena al programador...). En caso de usar
- el Dr T's KCS, procura que no estén nunca en marcha al mismo tiempo el MPMaster
- y el secuenciador. Por otro lado, este es el único caso de este tipo que me he
- encontrado, ya que incluso el Protracker 2.3 aloja de forma 'legal' el port
- serie para leer la entrada MIDI.
-
- Si hay algún problema al arrancar el programa, éste lo comunicará con un
- requester y volverá al sistema operativo.
-
- Las ToolTypes que se pueden meter en el icono son:
-
- WB_REQUESTER Con esto le indicamos al programa que queremos que
- abra el requester de ficheros en la pantalla del
- WorkBench, en lugar de la del propio programa.
-
- PATTERN= Le indicamos el pattern (plantilla) para el
- requester. Consulta el manual del ordenador sobre
- el uso de plantillas de fichero.
-
- DIR= Indica en que directorio queremos que se abra
- inicialmente el requester de grabar/cargar sample.
- Esto es util para dirigirlo al directorio del
- disco duro donde guardas normalmente los samples,
- y no tener que meter cada vez el path.
-
- FREC= Fija la frecuencia por defecto para samples RAW.
-
- MAXFREC= Fija la frecuencia de reproducción máxima que se
- puede utilizar. En los chips OCS/ECS el máximo es
- de 28867 Hz pero prefiero que se pueda cambiar por
- si salen modelos que admitan mayores frecuencias
- (creo que los modelos AGA admiten mayores
- frecuencias pero no he podido comprobarlo).
-
-
- La opción de abrir el requester de ficheros en el WorkBench es de utilidad
- solo cuando dispones de un requester que además es una AppWindow, o sea, que se
- le pueden tirar iconos dentro. Por ejemplo, el requester de ficheros de la
- reqtools.library, o el de la asl.library del WorkBench 3.0. En caso de que uses
- la versión 2.04 del sistema operativo, el requester no es AppWindow, pero
- puedes utilizar un parche para substituir el requester de la asl.library por el
- de la reqtools.library, que es muchísimo mejor.
-
-
-
- PANTALLA DEL PROGRAMA
-
- La pantalla del programa está dividida en 4 zonas:
-
- TRANSMISION: Desde aqui controlamos la transmisión y todos los parámetros
- que se le entregarán al equipo MIDI. Los gadgets son:
-
- Selec.- Abre el requester de ficheros para que puedas seleccionar el
- sample que quieres transmitir. Debe ser un sample RAW o IFF de 8 bits.
- Una vez seleccionado el sample, los gadgets se pondrán en el valor
- adecuado, mostrando así la longitud del sample, el numero de packets
- que ocupa, y fijando el 'Loop start' y el 'Loop end' a valores
- adecuados.
-
- Frecuencia.- Controla la frecuencia de reproducción del sample al pulsar
- sobre el gadget 'Play'.
-
- Waveform.- Esto deberia fijar el numero de sample que se le asigna dentro
- del sintetizador al sample que transmitimos. La función de este
- parámetro depende del sintetizador. En el caso del SY85, este valor
- fija en que WAVEFORM se meterá el sample, ya que cada WAVEFORM puede
- contener varios samples y se pueden asignar después a diferentes partes
- del teclado.
-
- Loop start, Loop end, Tipo loop.- Estos son los parámetros que definen el
- loop (repetición), o sea, margen de repetición y tipo (off, normal o
- alternada).
-
- Transmitir.- Transmite el sample actualmente seleccionado. Se puede
- interrumpir con el gadget STOP!!. En el momento de transmitir el sample
- el programa no lo carga en memoria completo si no que va cargando la
- porción que necesita transmitir en cada momento. Esto significa que la
- memoria disponible no limita el tamaño máximo del sample que se puede
- transmitir, si no que el límite lo fija el standard (2 Megas). Durante
- la transmisión se puede ver en la ventana de transmisión el numero de
- packets que quedan por enviar.
-
- X.- Limpia la zona de transmisión como si no hubiesemos seleccionado
- sample. Es puramente estética, ya que el seleccionar un sample no se
- carga en memoria, ni se abre el fichero, simplemente guarda el nombre
- para usarlo al pulsar el gadget 'Transmitir'.
-
-
- RECEPCION: Aqui podemos ver las características del sample que estamos
- recibiendo, o que ya hemos recibido. Hay 3 gadgets tipo botón:
-
- Recibir.- El programa se queda esperando que se le transmita un sample
- desde el exterior. Se puede interrumpir con el gadget STOP!!. El sample
- se recibirá en memoria de un golpe, acumulando todos los packets para
- su conversión en el momento de grabar el sample.
-
- Salvar sample.- Si hay un sample en memoria (recibido) se abrirá el
- requester de ficheros para que introduzcas el nombre con el que quieres
- salvar el sample, y en que directorio. Se salvará en formato RAW de 8
- bits.
-
- X.- Si hay un sample en memoria, lo borra de ésta y devuelve la memoria
- utilizada para el sample al sistema operativo.
-
-
- CANALES: controla los canales que se usan para entrada/salida. Para salida
- se puede especificar cualquiera de los canales del 1 al 16. Para entrada se
- puede seleccionar un canal del 1 al 16 o el modo OMNI, o sea, leer todos
- los canales.
-
-
- ZONA INFERIOR: es la zona de mensajes, y de reproducción de samples.
-
- Durante la transmisión/recepción se activa el gadget STOP!! y se desactivan
- todos los demás gadgets de la pantalla menos los dos gadgets de selección de
- canales, ya que en la versión 2.04 del sistema no se pueden desactivar este
- tipo de gadgets (en la versión 3.0 creo que si se puede). De todas formas,
- aunque durante la transmisión/recepción modifiques la selección de canales, al
- terminar la transferencia el programa pondrá la selección de canales como
- estaba antes de empezarla.
-
-
-
- MENUS Y TECLADO
-
- Todos los gadgets que tienen una letra subrayada significa que pulsando la
- tecla correspondiente a esa letra es como si pulsáramos el gadget, sin
- necesidad de tocar el ratón para nada. Además, la tecla SPACE equivale a pulsar
- el gadget STOP!!, o sea que interrumpe la transmisión/recepción en curso.
- También tenemos la tecla HELP, que mostrará el requester de 'Acerca de...', la
- tecla ESCAPE, con la que salimos del programa, y la tecla TAB, que selecciona
- el primer gadget numérico de la pantalla para poder modificarlo sin tener que
- seleccionarlo con el ratón. Mientras estás modificando un gadget numérico
- puedes pulsar TAB para pasar al siguiente gadget numérico, o Shift+TAB para
- pasar al anterior. En este punto hay un problema, y es que cuando entras un
- valor en el gadget 'Loop start' (o 'Loop end') y el programa tiene que corregir
- el otro valor del loop, el corregir dicho gadget lo desactiva, por lo que
- tendrás que seleccionar el gadget (o pulsar TAB) para poder modificarlo. Parece
- que esto es una interferencia que se hace el sistema operativo a si mismo.
- Ignoro si en versiones posteriores del sistema (2.1 y 3.0) esto sigue así. Para
- comprobar esto selecciona el gadget 'Loop start', entra un valor mayor que el
- que está en 'Loop end' y pulsa TAB, verás lo que pasa.
-
- Por otro lado está el menú del programa, aunque todo lo que está en el menú
- se puede hacer desde teclado o pulsando los gadgets adecuados. Esta ahí por si
- se quisiera usar el programa sin el teclado, ya que las opciones 'Acerca de...'
- y 'Quitar' no tienen gadget asociado en la pantalla.
-
-
-
- CUESTIONES TECNICAS (Apología del ensamblador...)
-
- Este programa ha sido escrito INTEGRAMENTE en ensamblador con código
- 'legal', o sea, siguiendo las normas del sistema operativo. Es muy estable, ya
- que no se ha colgado nunca en operación normal, y permite multitarea completa,
- sin problemas de velocidad ni siquiera en un Amiga 500 normal. Lo he probado en
- un Amiga 4000/030 y no ha dado ningún problema, ni con el procesador ni con el
- sistema operativo 3.0.
-
- Programado sobre un Amiga 500 Plus con 2 Megas de RAM, 3 disqueteras
- y el ensamblador Devpac 3.02. Este es el segundo programa completo que hago
- en ensamblador, y el primero que utiliza el sistema operativo, y es mucho más
- facil de lo que parece.
-
- Programa realizado inicialmente para transferir samples entre un Amiga 500 y
- un sintetizador Yamaha SY85. Primero intenté utilizar la MIDI.library de
- dominio público, pero es tan extremadamente lenta que el ordenador quedaba
- literalmente 'congelado' mientras recibia los datos del sample. Con el MPMaster
- la multitarea es total, con lo que puedes tener varios programas en marcha sin
- problemas. El programa está realizado de manera que sea casi imposible que haya
- problemas por falta de velocidad en entornos multitarea muy cargados. Durante
- una transmisión, por ejemplo, el programa solo ocupa un 15% del tiempo total de
- procesador en mi Amiga 500 Plus. Durante la recepción, por otro lado, ocupa un
- 3% del tiempo de procesador en un Amiga 500 normal. En los dos casos el
- ordenador tiene conectada memoria FAST externa (1 Mega y 4 Megas
- respectivamente). Solo pueden surgir problemas durante la recepción con
- programas que desactivan las interrupciones del port serie (acción 'ilegal') ya
- que entonces el ordenador no puede recoger los datos suficientemente rápido.
- Este problema se presenta solo en ocasiones excepcionales.
-
-
-
- MEJORAS A REALIZAR
-
- Lista de mejoras que quiero realizar:
-
- - Poder transmitir y recibir al mismo tiempo.
- - Añadir puerto AREXX al programa de forma que se pueda controlar desde
- otra aplicación, o que se puedan controlar otros programas desde el
- MPMaster.
- - Poder cambiar la velocidad de puerto serie por si en algún momento sale
- el esperadísimo standard MIDI de alta velocidad.
- - Poder asociar un nombre a cada uno de los canales de entrada, y salida,
- para facilitar la selección de canales en un entorno con varios equipos
- MIDI.
- - Soporte para la powerpacker.library, y poder comprimir y descomprimir
- asi los samples.
- - Alojar el hardware serie solo en el momento de realizar la transmisión/
- recepción, permitiendo así a otros programas en multitarea acceder al
- MIDI sin tener que quitar el MPMaster.
- - Soporte para samples IFF y otros formatos (de 8 o más bits).
- - Grabar iconos, junto con los samples, conteniendo la información
- recibida del equipo MIDI sobre loop, periodo, etc...
- - Incluir help interactivo (si hay alguien que le parezca dificil usar el
- programa).
- - Requesters de ficheros separados para cargar y grabar, guardando así
- por separado el último path y nombre usados para cargar y grabar.
- - Poder usar desde SHELL el programa para mandar listas de samples en
- bloque mediande un script o especificando varios ficheros.
- - Uso opcional de los mensajes de corrección de errores MIDI.
- - Edición gráfica del loop.
- - Soporte multilengua mediante la locale.library.
-
- De todas formas no estoy seguro de cuando podré realizar estas mejoras, o si
- las realizaré alguna vez, ya que dependen mucho de la información que pueda
- conseguir sobre formatos, sistema operativo, etc..., y de las ganas que tenga
- de mejorar el programa, ya que yo no lo utilizo por que no soy músico ni tengo
- sintetizador. De todas formas animo al que le interese que se mejore el
- programa que me escriba para comunicarme sus ideas y sugerencias sobre el
- programa.
-
-
-
- AGRADECIMIENTOS
-
- Mis más sinceros agradecimientos:
-
- - a Fco Javier Cocaña Galán, Leonardo Cocaña Galán y Juan A. Estela Valín
- por su amistad, y por sus constantes sugerencias (y feroces críticas).
- - a Commodore-Amiga Inc por crear el mejor ordenador del mundo.
- - a Motorola por sus excelentes microprocesadores, fáciles de programar y
- extremadamente flexibles.
- - a Nico François por crear la fantástica reqtools.library.
- - a IBM y Atari por crear unos ordenadores tan malos y facilitar así mi
- elección por el Amiga (muchiiisimas gracias).
-
-
-
- PARA CONTACTAR
-
- Te agradeceria que me enviases toda información que me pueda ser útil para
- ampliar la potencia del programa, como por ejemplo, información sobre otros
- formatos de fichero de samples (de 8 o más bits), sobre la implementación del
- standard MIDI de samples sobre otros equipos MIDI que no sean el Yamaha SY85, o
- simplemente para saber yo con que equipos funciona bién el programa.
-
- Para enviar sugerencias, informar de errores, intercambiar información, etc,
- contacta conmigo en esta dirección:
-
-
- Antonio J. Pomar Rosselló
- C/ Alférez Cerdá nº 13-bajos
- Palma de Mallorca 07014
- Baleares (España)
-
-
- Palma de Mallorca 22-Noviembre-1993
-